package com.dkm.ec.sale.repository;

import java.util.List;
import java.util.Map;

import com.dkm.base.api.model.Page;
import com.dkm.biz.repository.IRepository;
import com.dkm.ec.sale.domain.SaleSku;
import com.dkm.ec.sale.persistence.entity.SaleSkuPo;
/**
 * 对象功能:销售产品SKU Repository接口
 * 开发公司:SKG.COM
 * 开发人员:Yuki
 * 创建时间:2015-01-22 13:52:18
 */
public interface SaleSkuRepository extends IRepository<String, SaleSkuPo,SaleSku>{
	  
	/**
	 * 根据产品ID查询SKU列表
	 * @param prodId
	 * @return
	 */
	public List<SaleSkuPo> findByProdId(String prodId);
	
	public List<SaleSkuPo> findByProdId2(Map<String, Object> params);
	
	/**
	 * 根据产品ID和属性id查询SKU列表
	 * @param prodId
	 * @param attrIds
	 * @return
	 */
	public List<SaleSkuPo> findByProdIdAttrIds(String prodId,String attrIds);
	
	public SaleSkuPo getDefaultSkuId(String prodId);

	 public List<SaleSkuPo> findForSelectorPaged(Map<String, Object> map, Page page);
	 
	 public Integer countForSelector(Map<String, Object> params);

	
	public List<SaleSkuPo> findSaleSku(String userId, String productSkuId,
			Integer count);
	/**
	 * TODO方法名称描述
	 * @param buildMap
	 * @param page
	 * @return 
	 * List<SaleSkuPo>
	 * @exception 
	 * @since  1.0.0
	 */
	public List<SaleSkuPo> listSkuMsg(Map<String, Object> buildMap, Page page);

	/**
	 * 根据产品ID查询所有非删除状态的产品SKU
	 * @param productId
	 * @return 
	 * List<SaleSkuPo>
	 * @exception 
	 * @since  1.0.0
	 */
	public List<SaleSkuPo> findOnSaleSkuByProdId(String productId);
	
	/**
	 * 根据key和status查找
	 * @param key
	 * @return
	 */
	public List<SaleSkuPo> findByKeyAndStatus(String key, String status);
	
	public Boolean checkSameProd(String skuId1,String skuId2);
	public List<SaleSkuPo> find2(Map<String, Object> params,Page page);
	public Integer find2Count(Map<String, Object> params);
	
		
	public List<SaleSkuPo> findBySkuIds(String skuIds);
	
	public List<SaleSkuPo>  findByGroupKey(String group,Page page);
	
	public Integer getCountbyGroupKey(String group) ;
	
	public SaleSkuPo getSaleSkuPoByKey(String key);
	
	public SaleSkuPo getBySkuCode(String skuCode);
	public List<SaleSkuPo> findSkuByIds(List<String> groupIds);
	
	/**
	 * 查找销售类型不是按库存销售的
	 * @return
	 */
	public List<SaleSkuPo> findSaleTypeNotStock();
	
	/**
	 * 根据套餐构件ID查找包含的套餐
	 * @param itemSkuId
	 * @return
	 */
	public List<SaleSkuPo> findPackageByItemSku(String itemSkuId, String callType);
	
	/**
	 * 根据套餐SKU查找包含的列表项，并计算套餐SKU的优惠价
	 * @param saleSkuPo
	 * @return
	 */
	public List<SaleSkuPo> findPackageItemsBySkuId(SaleSkuPo saleSkuPo);
	
	/**
	 * 查询sku
	 */
	public List<SaleSkuPo> findAll2(String prodId, String attrIds);

	public List<SaleSkuPo> findBuyAttrOpIds(String productId, String attrOpIds);

	public SaleSkuPo findBySaleItemId(String prodSkuId);
	
}
